package com.dq.annotation.validator.valid;

import cn.hutool.core.util.IdcardUtil;
import org.apache.commons.lang3.StringUtils;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * 身份证验证自定义注解, 逻辑处理类
 *      这个自定义注解逻辑处理类 实现了ConstraintValidator接口，它默认被spring管理成bean, 不用在此类上用@Compent注解成spring的bean, 也可以在这个逻辑处理类里面用@Autowiredu或者@Resources注入别的服务bean;
 * @author cf
 */
public class IsIdcardValidator implements ConstraintValidator<IsIdcard, String> {

    @Override
    public void initialize(IsIdcard object) {
        // object: 可以获取自定义接口的元素值, 如: object.message()
        // 初始化, 可以在此类加载时, 初始化一些参数, 如: 验证length不能大于的值
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
        // 验证是否合法, return false会出现提示信息
        if(StringUtils.isBlank(value)) {
            return false;
        }
        return IdcardUtil.isValidCard(value);
    }
}
